/*****************************************************************************
 * Copyright (C) Stacy Curl. All rights reserved.                            *
 * ------------------------------------------------------------------------- *
 * The software in this package is published under the terms of the BSD      *
 * style license a copy of which has been included with this distribution in *
 * the LICENSE.txt file.                                                     *
 *****************************************************************************/
package picounit.mocker;

import java.util.List;
import java.util.Set;

public interface ExpectationMatcher {
	BooleanConsequenceMatcher call(boolean ignore);
	ByteConsequenceMatcher call(byte ignore);
	CharConsequenceMatcher call(char ignore);
	DoubleConsequenceMatcher call(double ignore);
	FloatConsequenceMatcher call(float ignore);
	IntConsequenceMatcher call(int ignore);
	LongConsequenceMatcher call(long ignore);
	ShortConsequenceMatcher call(short ignore);

	StringConsequenceMatcher call(String ignore);
	<T> ConsequenceMatcher<T> call(T ignore);
	
	BooleanArrayConsequenceMatcher call(boolean[] ignore);
	ByteArrayConsequenceMatcher call(byte[] ignore);
	CharArrayConsequenceMatcher call(char[] ignore);
	DoubleArrayConsequenceMatcher call(double[] ignore);
	FloatArrayConsequenceMatcher call(float[] ignore);
	IntArrayConsequenceMatcher call(int[] ignore);
	LongArrayConsequenceMatcher call(long[] ignore);
	ShortArrayConsequenceMatcher call(short[] ignore);
	
	StringArrayConsequenceMatcher call(String[] ignore);
	<T> ArrayConsequenceMatcher<T> call(T[] ignore);

	<T> ListConsequenceMatcher<T> call(List<T> ignore);
	<T> SetConsequenceMatcher<T> call(Set<T> ignore);
	
	PostConsequenceMatcher notCall(boolean ignore);
	PostConsequenceMatcher notCall(byte ignore);
	PostConsequenceMatcher notCall(char ignore);
	PostConsequenceMatcher notCall(double ignore);
	PostConsequenceMatcher notCall(float ignore);
	PostConsequenceMatcher notCall(int ignore);
	PostConsequenceMatcher notCall(long ignore);
	PostConsequenceMatcher notCall(short ignore);

	PostConsequenceMatcher notCall(String ignore);
	<T> PostConsequenceMatcher notCall(T ignore);
}
